package demo03.Exception;

import java.util.List;

/*
* 多个异常处理办法
* 1.一次捕获，一次处理
* 2.一次捕获，多次处理
* 3.多次捕获，多次处理->分别处理*/
public class Demo01Exception {
    public static void main(String[] args) {
/*        //* 1.一次捕获，一次处理
        try {
            int[]arr={1,2,3};
            System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3
            List<Integer>list=List.of(1,2,3);
            System.out.println(list.get(3));//java.lang.IndexOutOfBoundsException: Index 3 out-of-bounds for length 3
        }catch (Exception e){
            System.out.println(e);
        }
        //最后输出结果是第一个异常，java.lang.ArrayIndexOutOfBoundsException: 3
        //第一个异常不产生时处理第二个异常*/

        //* 2.一次捕获，多次处理
/*        try {
            int[]arr={1,2,3};
            System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3
            List<Integer>list=List.of(1,2,3);
            System.out.println(list.get(3));//java.lang.IndexOutOfBoundsException: Index 3 out-of-bounds for length 3
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println(e);
        }catch (IndexOutOfBoundsException e){
            System.out.println(e);
        }
        //也只输出第一个异常，也就是java.lang.ArrayIndexOutOfBoundsException: 3
        *//*
        *ArrayIndexOutOfBoundsException是IndexOutOfBoundsException的子类
        * 若父类写在上面，子类写在下面，就会报错，就像下面这样，会说异常已经被caught了*/
 /*       try {
            int[]arr={1,2,3};
            System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3
            List<Integer>list=List.of(1,2,3);
            System.out.println(list.get(3));//java.lang.IndexOutOfBoundsException: Index 3 out-of-bounds for length 3
        }catch (IndexOutOfBoundsException e){
            System.out.println(e);
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println(e);
        }*/
        //3.多次捕获，多次处理
/*        try {
            int[]arr={1,2,3};
            System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3
        }catch (Exception e){
            System.out.println(e);
        }

        try {
            List<Integer>list=List.of(1,2,3);
            System.out.println(list.get(3));//java.lang.IndexOutOfBoundsException: Index 3 out-of-bounds for length 3
        }catch (IndexOutOfBoundsException e){
            System.out.println(e);
        }*/
        //这下输出了两个，因为是分别处理，因此他们之间没有什么联系
        //java.lang.ArrayIndexOutOfBoundsException: 3
        //java.lang.IndexOutOfBoundsException: Index 3 out-of-bounds for length 3


        //运行时异常被抛出可以不处理。即不捕获也不声明抛出。
        //默认给虚拟机处理,终止程序,什么时候不抛出运行时异常了,在来继续执行程序
        int[]arr={1,2,3};
        System.out.println(arr[3]);
        List<Integer>list=List.of(1,2,3);
        System.out.println(list.get(3));

    }
}
